/**
	* Copyright (c) minuteproject, minuteproject@gmail.com
	* All rights reserved.
	* 
	* Licensed under the Apache License, Version 2.0 (the "License")
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	* 
	* http://www.apache.org/licenses/LICENSE-2.0
	* 
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	* 
	* More information on minuteproject:
	* twitter @minuteproject
	* wiki http://minuteproject.wikispaces.com 
	* blog http://minuteproject.blogspot.net
	* 
*/
/**
	* template reference : 
	* - name : OpenxavaDomainObjectUML
	* - file name : DomainObjectUMLJPAAnnotationOXAnnotationV4.vm
*/
package sistema_oficial.sistema_oficial.domain.sistemaoficial;

//MP-MANAGED-ADDED-AREA-BEGINNING @import@
//MP-MANAGED-ADDED-AREA-ENDING @import@
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import org.openxava.annotations.*;

import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteEmpacadoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteEmpaqueUsadoNivel5;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProductoUsadoNivel3;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.AreaEmpacadoNivel3;

/**
 *
 * <p>Title: LoteEmpacadoNivel3</p>
 *
 * <p>Description: Domain Object describing a LoteEmpacadoNivel3 entity</p>
 *
 */
@Entity (name="LoteEmpacadoNivel3")
@Table (name="lote_empacado_nivel3")
@Views({
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-base-lote_empacado_nivel3@
	@View(
		name="base",
		members=
        "" 	
        + "identificador  ; "
        + "horaInicio  ; "
        + "horaFinal  ; "
        + "existe  ; "
        + "areaEmpacadoNivel3Codigo  ; "
		),
//MP-MANAGED-UPDATABLE-ENDING
	@View(
		name="Create", 
		extendsView="base"
	),
	@View(
		name="Update", 
		extendsView="base",
        members=
          "" 	
	    + "detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	    + "detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	    + "detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	),
	@View(extendsView="base",
        members=
          "" 	
	    + "detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	    + "detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	    + "detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador { detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador };" 
	),
    @View(name="loteEmpacadoNivel3DEFAULT_VIEW", 
	   members=
          " identificador ;" 	
        + "horaInicio  ; "
        + "horaFinal  ; "
        + "existe  ; "
	),
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-reference-lote_empacado_nivel3@
    @View(name="reference", 
       extendsView="loteEmpacadoNivel3DEFAULT_VIEW"
//MP-MANAGED-UPDATABLE-ENDING
    )
})

@Tabs({
@Tab(
properties=
     " horaInicio "
    +",  horaFinal "
    +",  existe "
)
,
@Tab(
name = "LoteEmpacadoNivel3Tab",
properties=
     " horaInicio "
    +",  horaFinal "
    +",  existe "
)
,
@Tab(
name = "LoteEmpacadoNivel3TabWithRef",
properties=
     " horaInicio "
    +",  horaFinal "
    +",  existe "
)
})
//MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @class-annotation@
public class LoteEmpacadoNivel3 {

    @Hidden @Id @Column(name="identificador" )
    private Integer identificador; 

//MP-MANAGED-ADDED-AREA-BEGINNING @hora_inicio-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @hora_inicio-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-hora_inicio@
    @Column(name="hora_inicio",   nullable=false,  unique=false)
    @Required
    private Timestamp horaInicio;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @hora_final-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @hora_final-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-hora_final@
    @Column(name="hora_final",   nullable=false,  unique=false)
    @Required
    private Timestamp horaFinal;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @existe-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @existe-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-existe@
    @Column(name="existe",   nullable=false,  unique=false)
    @Required
    private Boolean existe;	
//MP-MANAGED-UPDATABLE-ENDING


//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-AreaEmpacadoNivel3-lote_empacado_nivel3@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="area_empacado_nivel3_codigo", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private AreaEmpacadoNivel3 areaEmpacadoNivel3Codigo; 
    
//MP-MANAGED-UPDATABLE-ENDING
//children
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador-lote_empacado_nivel3@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteEmpacadoNivel3.class, fetch=FetchType.LAZY, mappedBy="loteEmpacadoNivel3Identificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleLoteEmpacadoNivel3> detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteEmpacadoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador-lote_empacado_nivel3@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteEmpaqueUsadoNivel5.class, fetch=FetchType.LAZY, mappedBy="loteEmpacadoNivel3Identificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleLoteEmpaqueUsadoNivel5> detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteEmpaqueUsadoNivel5>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador-lote_empacado_nivel3@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleLoteProductoUsadoNivel3.class, fetch=FetchType.LAZY, mappedBy="loteEmpacadoNivel3Identificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleLoteProductoUsadoNivel3> detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteProductoUsadoNivel3>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//m2m
    /**
    * Default constructor
    */
    public LoteEmpacadoNivel3() {
    }


    public Integer getIdentificador() {
        return identificador;
    }
	
    public void setIdentificador (Integer identificador) {
        this.identificador =  identificador;
    }
    

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-hora_inicio@
    public Timestamp getHoraInicio() {
        return horaInicio;
    }
	
    public void setHoraInicio (Timestamp horaInicio) {
        this.horaInicio =  horaInicio;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-hora_final@
    public Timestamp getHoraFinal() {
        return horaFinal;
    }
	
    public void setHoraFinal (Timestamp horaFinal) {
        this.horaFinal =  horaFinal;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-existe@
    public Boolean getExiste() {
        return existe;
    }
	
    public void setExiste (Boolean existe) {
        this.existe =  existe;
    } 
//MP-MANAGED-UPDATABLE-ENDING


    public AreaEmpacadoNivel3 getAreaEmpacadoNivel3Codigo () {  //
    	return areaEmpacadoNivel3Codigo;
    }
	
    public void setAreaEmpacadoNivel3Codigo (AreaEmpacadoNivel3 areaEmpacadoNivel3Codigo) {
    	this.areaEmpacadoNivel3Codigo = areaEmpacadoNivel3Codigo;//this.areaEmpacadoNivel3Codigo = areaEmpacadoNivel3;
    }

    public Set<DetalleLoteEmpacadoNivel3> getDetalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador() {
        if (detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador == null){
            detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteEmpacadoNivel3>();
        }
        return detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }

    public void setDetalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (Set<DetalleLoteEmpacadoNivel3> detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador) {
        this.detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = detalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }	
    
    public void addDetalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (DetalleLoteEmpacadoNivel3 detalleLoteEmpacadoNivel3) {
    	    getDetalleLoteEmpacadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador().add(detalleLoteEmpacadoNivel3);
    }
    
    public Set<DetalleLoteEmpaqueUsadoNivel5> getDetalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador() {
        if (detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador == null){
            detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteEmpaqueUsadoNivel5>();
        }
        return detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }

    public void setDetalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (Set<DetalleLoteEmpaqueUsadoNivel5> detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador) {
        this.detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = detalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }	
    
    public void addDetalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (DetalleLoteEmpaqueUsadoNivel5 detalleLoteEmpaqueUsadoNivel5) {
    	    getDetalleLoteEmpaqueUsadoNivel5LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador().add(detalleLoteEmpaqueUsadoNivel5);
    }
    
    public Set<DetalleLoteProductoUsadoNivel3> getDetalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador() {
        if (detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador == null){
            detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = new HashSet<DetalleLoteProductoUsadoNivel3>();
        }
        return detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }

    public void setDetalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (Set<DetalleLoteProductoUsadoNivel3> detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador) {
        this.detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador = detalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador;
    }	
    
    public void addDetalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador (DetalleLoteProductoUsadoNivel3 detalleLoteProductoUsadoNivel3) {
    	    getDetalleLoteProductoUsadoNivel3LoteEmpacadoNivel3ViaLoteEmpacadoNivel3Identificador().add(detalleLoteProductoUsadoNivel3);
    }
    



//MP-MANAGED-ADDED-AREA-BEGINNING @implementation@
//MP-MANAGED-ADDED-AREA-ENDING @implementation@

}
